package com.jiruan.invoicemanagementsystem.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


//控制  哪些url 不拦截 有没有user的key
//        哪些url 拦截 驳回

//1.先判断session 里，有没有user的key
//--如果 没有 ，说明没登陆，login.jsp  ;login.jsp ;  /login 是放行的；  除此之后都拦截


//  如果有  ，路径都放行！




@WebFilter("/* ")
//未登录拦截访问
public class InterceptFilter implements Filter {




    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("charSetFilter过滤器初始化");
    }

    String[] urls={"index.jsp","login"};

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        System.out.println("请求达到charsetFIlter 过滤器 。。。 马上离开 ，前往charsetController");
//        servletRequest.setCharacterEncoding("utf-8");
//        servletResponse.setContentType("text/html;charset=utf-8");



        HttpServletRequest request = (HttpServletRequest) servletRequest;
        Object user=request.getSession().getAttribute("user");
        if (user==null){  //NO!
            if (checkUrl(request)){   //使用下方的checkUrl方法
                filterChain.doFilter(servletRequest,servletResponse);   //将当前请求送往下一个处理方法    //放行

            }else {
                ((HttpServletResponse) servletResponse).sendRedirect("/nvoiceManagementSystem_war/index.jsp");
            }

        }else {  //登录成功
            filterChain.doFilter(servletRequest,servletResponse);   //将当前请求送往下一个处理方法    //放行
        }

//        上半部分是去的操作
//        filterChain.doFilter(servletRequest,servletResponse);   //将当前请求送往下一个处理方法



        System.out.println("charSetFilter已经处理完请求，经过charSetFilter 前往客户端");
    }
    //不登陆  地址里直接 projectInfo/showdt  --》login.jsp
    // 地址直接访问 login.jsp  --》放行
    //任何访问路径都不拦截

    public boolean checkUrl(HttpServletRequest request){
        //1.获得请求地址

        String requestURI= request.getRequestURI();
        int index=requestURI.lastIndexOf("/")+1;
        String url=requestURI.substring(index);
        for (String s:urls){
            if (url.equals(s)){
                return true;
            }
        }return false;
    }

    @Override
    public void destroy() {

        System.out.println("charSetFilter过滤器销毁");
    }
}
